package db

import (
	"gomonitor-server/src/mylog"
	"sync"
)

var (
	dbTool        *DbTool
	dbToolMutex   sync.Mutex
	dbToolInited  bool
	dbToolInitErr error
)

func GetConnection() (*DbTool, error) {
	if dbToolInited {
		mylog.Logger.Debugf("获取数据库连接,存在连接直接返回...")
		return dbTool, dbToolInitErr
	}
	mylog.Logger.Debugf("获取数据库连接, 不存在，排队获取....")
	dbToolMutex.Lock()
	defer dbToolMutex.Unlock()
	mylog.Logger.Debugf("获取数据库连接, 不存在，排队获取成功....")
	if !dbToolInited {
		if dataSource == nil {
			mylog.Logger.Warningf("数据源没有初始化，使用默认数据源")
		}
		dbTool, dbToolInitErr = new(DbTool).init(dataSource.Username, dataSource.Password, dataSource.Host, dataSource.Port, dataSource.DBName)
		dbToolInited = true
		mylog.Logger.Infof("初始化DB变量....")
	}
	return dbTool, dbToolInitErr
}
